The complexity of modem integrated circuits and the high cost of fabricating prototypes has led to the development of a class of computer programs that simulate the operation of a circuit. These simulators aid the designer in determining the proper bias voltages to be applied to the various components and in verifying the operation of the circuit before resources are committed to the fabrication of prototypes.
The circuit to be simulated is typically described in terms of a list of nodes and the components connected to each node. The user may actually provide a net list or a graphical representation of the circuit from which the program derives the net list. Each component may be viewed as a device that sources or sinks a current whose amplitude and phase are determined by the voltage at the nodes to which it is connected, and possibly, by the previous voltages at the node in question.
The simulation program finds the set of node voltages that lead to a circuit in which the sum of the currents at each node is zero. This is the voltage at which the currents provided by components that are the source of currents is exactly matched by the currents sinked by the remaining components. Each component is described by a subroutine that provides the current sinked or sourced by the component in response to an input voltage. As will be explained in more detail below, the component subroutines may also provide the first derivatives of the current with respect to the node voltages. In addition, the output of a component subroutine may depend on the history of the node to which the corresponding component is connected. For example, if the component contains inductors or capacitors, than the current will depend on the node voltage and the rate of change of the node voltage with time. The rate of change of the node voltage may be computed from the previous values of the node voltages, i.e., the “history of the nodes”.
Unfortunately, modem integrated circuits and systems have become too complex to permit complete simulation of the non-linear behavior at the transistor level of description. The number of nonlinear functions that must be solved simultaneously is too large for the simulator to determine a convergent solution in a reasonable time, if at all. This problem presents a significant productivity bottleneck for design engineers. A solution to this problem is to design at a higher level of abstraction, using behavioral models of the nonlinear components or ICs in the circuit or system. In principle, the behavioral models can represent the relevant nonlinear electrical behavior of the components with sufficient accuracy, yet they are simple enough to allow rapid simulation.
The behavioral model is a description of the electrical behavior of the device, circuit, or sub-system that permits the circuit simulation to perform in a manner that represents the actual circuit behavior in a correct manner, in the given simulation conditions. The simulation environment often imposes constraints on what the circuit simulation can predict. For example, a simple linear model of a real nonlinear component will be able to imitate the actual component's behavior in a small-signal simulation, but will be unable to predict the component's behavior under conditions where the drive signal to the component is large enough to excite the nonlinear behavior. Yet the linear model will allow the small-signal simulation to run quickly. The linear model is therefore an accurate description of the component within the limitations of small-signal conditions, and most suitable for such simulations.
Models of nonlinear components such as transistors generally comprise several equations that describe the physics or terminal electrical properties of the transistor. These equations include nonlinear differential equations that account for the reactive elements in the devices or circuits. Historically these equations are written as time-domain equations. The simulators solve the nonlinear equations by iteration at each time-step in the solution, converging to an answer that satisfies the electrical circuit laws, before moving on to the next time step and repeating the solution exercise, as the circuit voltages progress with time. The time-steps must be small enough for the changes in the voltages and currents in the circuit to be small, enabling accurate approximations to the time derivatives to be calculated, for solving the differential equations.
While these time-domain models may be accurate in their descriptions of device behavior, in a circuit they will present the simulator with many nonlinear equations to solve. This can lead to the time-consuming convergence difficulties alluded to earlier, for complex circuits or systems of components. More efficient circuit solution techniques have been developed to deal with specific circuit and system design problems. For example, the time domain solution method can be inefficient for high frequency signals, the time-steps must be a tiny fraction of the signal cycle to permit the simulator to converge. This is particularly true for large-signal analysis where high-order harmonics of the drive signal are created by the nonlinear devices and sub-circuits. The simulator time-step must be a small fraction of the highest frequency component under consideration. This can result in very long simulation times.
An alternative method, called harmonic balance (HB) is often used for simulations of microwave and wireless circuits and systems in the frequency domain. In this method, the voltages and currents in the circuit at each frequency component of the signal are calculated, and solved for each frequency component that is present. This is a truly nonlinear simulator, since the nonlinear devices and components generate harmonic and intermodulation signal components, and the effects of these are solved at each frequency. Since generally the number of frequency components is quite small, this solution method can offer savings in the amount of time needed to solve the nonlinear equations describing the circuit. This method, however, only solves for steady-state conditions and hence periodic or quasi-periodic signals.
Modern communication systems utilize complicated circuits that are stimulated by complex signals. The signals are typically a high frequency ‘carrier’ signal, which is modulated by a complex information signal. Such signal combinations are difficult to solve using either time-domain or HB techniques alone. The carrier is best suited to HB, and the information signal, or envelope, is amenable to solution in the time domain, since the modulation frequencies are relatively low: the two signal are said to have very different timescales.
A class of simulators known as ‘transient envelope’ simulators has been developed to solve these problems, essentially by splitting the signal up into carrier and modulation signals, and solving the circuit equations for each appropriately, as indicated above, and coupling the solutions to ensure convergence of the overall solution. For example, U.S. Pat. No. 5,588,142 teaches a simulator for simulating circuits that are stimulated with a signal that is represented as a plurality of carriers that are modulated by slowly varying signals.
Transient envelope simulators assume that a model is available for each circuit component in the circuit being simulated. This will be the true if the circuit component is one of the elementary components, i.e, resistors, capacitors, diodes, etc, in the simulator component library. If the component is constructed from a reasonably small number of elementary components having models in the simulator library, this condition can also be satisfied by replacing the circuit component by a description that defines the circuit component in the elementary components of the library, and then requiring the simulator to simulate both the circuit component in question and the larger circuit in which it performs as if the combination were one large circuit constructed from the library components.
Unfortunately, this solution is not always possible. For a complex circuit, the number of elementary components may be too large to allow the simulator to compute a solution. In this regard, it should be noted that the simulator utilizes an iterative process to simulate the circuit, and hence, the number of simulations of the circuit element needed to use this approach can be prohibitively large if the circuit element contains a large number of components and is to be simulated from “scratch” at each iteration.
In addition, there are cases in which the circuit being simulated is provided as a “black box” from a manufacturer or the elementary components from which the circuit is constructed are being operated in a range for which valid models are not available. In either case, a model for the component that is adapted for use in the circuit simulator must be provided for the user.